<template>
{{#if page.psSysPFPlugin}}
    {{> @macro/plugins/view/view-use.hbs appPlugin=page.psSysPFPlugin}}
{{else}}
    {{#if page.psViewLayoutPanel.useDefaultLayout}}
    <AppSDViewLayout :class="classNames">
        <template v-if="!noViewCaption && model.showCaption" #viewHeaderContentLeft>
            <div class="view-header__caption">
                {{> @macro/view/view-caption.hbs}}
                {{> @macro/view/view-datainfo-bar.hbs}}
            </div>
        </template>
        {{#hasCtrl page.ctrls 'TOOLBAR'}}
        <template #viewHeaderContentRight>
        {{#each page.ctrls as | ctrl |}}
            {{#eq ctrl.controlType 'TOOLBAR'}}
            <div class="view-header__toolbar">
                {{> @macro/widgets/toolbar/toolbar.hbs page=page ctrl=ctrl}}
            </div>
            {{/eq}}
        {{/each}}
        </template>
        {{/hasCtrl}}
        {{#hasCtrl page.ctrls 'SEARCHFORM'}}
		<template v-slot:[searchFormSlotName]>
		{{#each page.ctrls as | ctrl |}}
			{{#and (eq ctrl.controlType 'SEARCHFORM') (neq ctrl.formStyle 'SEARCHBAR')}}
			{{> @macro/widgets/form-detail/search-form.hbs ctrl=ctrl}}
			{{/and}}
		{{/each}}
		</template>
		{{/hasCtrl}}
        <template #default>
            {{#each page.ctrls as | ctrl |}}
            {{#eq ctrl.controlType 'DASHBOARD'}}
            {{> @macro/widgets/dashboard/dashboard.hbs ctrl=ctrl}}
            {{/eq}}
            {{/each}}
        </template>
        {{> @macro/view/view-msg.hbs}}  
    </AppSDViewLayout>
    {{else}}
    <div :class="classNames">
        {{#if page.psViewLayoutPanel.rootPSPanelItems}}
        {{#each page.psViewLayoutPanel.rootPSPanelItems as | panelItem |}}
        {{> @macro/widgets/panel-detail/include-panel.hbs type=panelItem.itemType item=panelItem isMultiData=false panel=page.psViewLayoutPanel page=page}}
        {{/each}}
        {{/if}}
    </div>
    {{/if}}
{{/if}}
</template>
<script lang="ts" setup>
// 基于template/src/views/\{{appModules}}/\{{pages@DEPORTALVIEW}}/\{{spinalCase page.codeName}}.vue.hbs生成
{{#if page.psViewLayoutPanel.useDefaultLayout}}
import { AppSDViewLayout } from "@components/layout/sd-view-layout";
{{> @macro/widgets/ctrl/import-ctrl.hbs ctrls=page.ctrls}}
{{else}}
import { AppCtrlPos, AppScrollContainer, AppSimpleFlexContainer, AppStandardContainer, AppTabPanel, AppTabPage } from '@components/layout-element/structure';
{{#if page.psViewLayoutPanel.viewProxyMode}}
{{> @macro/widgets/ctrl/import-ctrl.hbs ctrls=page.psViewLayoutPanel.psControls}}
{{else}}
{{> @macro/widgets/ctrl/import-ctrl.hbs ctrls=page.ctrls}}
{{/if}}
{{/if}}
import { model } from "./{{spinalCase page.codeName}}-model";
import { 
    useNavParamsBind, 
    useEventBind, 
    handleCtrlInit, 
    {{#page.ctrls}}
  {{#eq controlType 'TOOLBAR'}}
    handleToolbarItemClick,
  {{/eq}}
{{/page.ctrls}}
    handleCtrlAction, 
    handleCtrlDestroy, 
    getViewClassNames,
{{#unless page.psViewLayoutPanel.useDefaultLayout}}
    handleComponentAction,
{{/unless}}
} from "@/hooks/use-view";
import { DEPortalViewActionType, IContext, IParam, IDEPortalViewAbility, IDEPortalViewControllerParams, IDEPortalViewStore, DEPortalViewController, IDEPortalViewController, ILoadingHelper, IEvent, IProjectSetting } from '@/core';

{{> @macro/view/view-props.hbs 
    propsDefaultReplace=true
    propsDefault="noViewCaption: true,openType: 'ROUTE',isLoadDefault: true,"
}}


{{> @macro/common/emit.hbs name="view" actionType="DEPortalViewActionType" ability="IDEPortalViewAbility"}}

const classNames = computed(() => {
    return getViewClassNames(model, props);
});

const projectSetting: IProjectSetting = App.getProjectSetting();

const showTabPageExp = projectSetting.multiTabsSetting.show;

const searchFormSlotName = computed(() => {
    let searchFormSlotName = 'viewHeaderTop';
    if (!showTabPageExp && props.openType == 'ROUTE') {
        searchFormSlotName = 'viewHeaderBottom';
    }
  	return searchFormSlotName;
});

const params: IDEPortalViewControllerParams<DEPortalViewActionType, IDEPortalViewAbility> = { 
    name: props.name,
    model, 
    evt, 
    isLoadDefault: props.isLoadDefault,
    openType: props.openType, 
    pLoadingHelper: props.pLoadingHelper, 
    handler: (data: IDEPortalViewStore) => { return reactive(data); } 
};

{{> @macro/common/controller.hbs name="view" IController="IDEPortalViewController" store="IDEPortalViewStore" ability="IDEPortalViewAbility" controller="DEPortalViewController"}}
</script>
